1
การเปลี่ยนจากเธรดเป็นอินสแตนซ์โปรแกรม
AI023Lesson 4
00:00

ในทริตอน หน่วยพื้นฐานของการดำเนินการจะเปลี่ยนจากเธรดสเกลาร์ของ CUDA เป็น อินสแตนซ์โปรแกรม. ซึ่งเป็นการแทนที่แบบสร้างภาพของบล็อกเธรดใน GPU โดยที่อินสแตนซ์เดียวจะจัดการกับชุดข้อมูลเวกเตอร์ 'บล็อก' หลายค่าพร้อมกัน

1. ตัวตนของอินสแตนซ์โปรแกรม

หน่วยดำเนินการทุกหน่วยจะรับตัวตนผ่าน pid = tl.program_id(axis=0). พิจารณาอย่างเช่น รถยกในโกดัง (อินสแตนซ์โปรแกรม) ที่ยก พาเลท (บล็อก) ของกล่อง 128 ชิ้น ซึ่งต่างจากแรงงานคนเดียว (เธรดของ CUDA) ที่ยกกล่องเพียงชิ้นเดียว

2. ทริตอนเทียบกับเทนเซอร์ของพายโทช

การเข้าใจช่องว่างเชิงความหมายมีความสำคัญต่อการจัดการหน่วยความจำ:

  • เทนเซอร์ของพายโทช: วัตถุแบบพีทีอนที่ฝั่งโฮสต์ห่อหุ้มการจัดเก็บในหน่วยความจำ VRAM ลำดับขั้นและเมตาดาต้า
  • เทนเซอร์ของทริตอน: วัตถุระดับคอมไพล์ที่แสดงค่าหรือตัวชี้ที่อยู่ใน เรจิสเตอร์หรือ SRAM.
มุมมองของพายโทช
วัตถุพีทีออนที่ชี้ไปยังหน่วยความจำแบบต่อเนื่องระดับโลก
มุมมองของทริตอน
บล็อกข้อมูล 2D/1D ภายในเรจิสเตอร์ของคอมไพล์เลอร์

3. ลักษณะของแบบจำลอง SPMD

ทริตอนใช้แนวทาง โปรแกรมเดียว ข้อมูลหลายชุด (SPMD) การไหล ทุกอินสแตนซ์โปรแกรมจะดำเนินการตาม รหัสเดียวกันอย่างแม่นยำ โค้ด ความแตกต่างจะเกิดขึ้นก็ต่อเมื่อตรรกะใช้ pid ในการคำนวณตำแหน่งหน่วยความจำเฉพาะ

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>